package server.encuesta;

import server.Control;
import server.aula.ControlAula;
import server.grupo.ControlGrupo;
import server.grupo.ControlParticipanteGrupo;
import server.login.ControlLogin;
import server.organizacion.ControlOrganizacion;
import utils.UtilsObjetosDominio;
import persistencia.*;
import persistencia.dominio.AccesoPagina;
import persistencia.dominio.Actividad;
import persistencia.dominio.Actualizacion;
import persistencia.dominio.Aula;
import persistencia.dominio.Curso;
import persistencia.dominio.EncuestaSiat;
import persistencia.dominio.EncuestaSiatPersona;
import persistencia.dominio.Grupo;
import persistencia.dominio.Log;
import persistencia.dominio.Modulo;
import persistencia.dominio.Participante;
import persistencia.dominio.ParticipanteComision;
import persistencia.dominio.Persona;
import persistencia.dominio.PreguntaSiat;
import persistencia.dominio.RespuestaPreguntaSiat;
import persistencia.dominio.TipoUsuario;
import persistencia.dominio.ValorCalificacion;

import java.sql.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;

import comun.MensajeDeError;
import comun.MyException;
import comun.constantes.ACCIONES_A_REALIZAR;
import comun.constantes.CONSTANTES_FINALES;
import comun.constantes.ESTADO_AULAS;
import comun.constantes.ESTADO_ENCUESTA;
import comun.constantes.ESTADO_GRUPOS;
import comun.constantes.PARAMETROS_PAGINAS;
import comun.constantes.TIPO_AULAS;
import comun.constantes.TIPO_PREGUNTA_SIAT;
import comun.constantes.TIPO_USUARIOS;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class ControlEncuesta extends Control {

	public ControlEncuesta(Persistencia persistencia) {
      this.persistencia = persistencia;
    }

    public ControlEncuesta(Connection conexion) {
      this.conexionSQL = conexion;
    }
    
    public Vector getEncuestaSiatParaTiposDeUsuarios(Vector tiposUsuario) throws Exception{

        	String filtro = "("+UtilsObjetosDominio.generarFiltroConIds("paraQuien",tiposUsuario);
        	filtro += ") & estado == \""+ ESTADO_AULAS.ACTIVO+"\"";
        	Vector vector = persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.EncuestaSiat",filtro);
        	//System.out.println("filtrogetEncuestaSiatParaTiposDeUsuarios: "+filtro);
        	return vector;          

    }  
    
    /*Si el String TipoUsuario viene null, debemos ir a buscar alguna encuesta para algun tipo de usuario de la persona;
     * sino traemos solo la encuesta para el tipo de usuario pasado como parametro*/
    public EncuestaSiat getEncuestaSiat(String tipoUsuario) throws Exception{
     
       		String filtro = "paraQuien.nombre == \""+tipoUsuario+"\"";
        	filtro += " & estado == \""+ ESTADO_AULAS.ACTIVO+"\"";        	
        	Vector vector = persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.EncuestaSiat",filtro);
           	if(vector.isEmpty())
           		return null;
           	else return (EncuestaSiat)vector.elementAt(0);

    }  
    
    public Vector getPreguntasEncuestas(Long idEncuesta) throws Exception{

       	  String filtro=
                "encuestaSiat.id == "+idEncuesta;
          Vector preguntas = persistencia.getObjectosPorClaseYFiltro
                    ("persistencia.dominio.PreguntaSiat","orden",filtro);
          return preguntas;

      }
   
    public Vector getValoresCalificaciones(Long idTipoCalificacion, Long idTipoCalificacionEncu) throws Exception{    	
     	 String filtro = "(";
     	 if(idTipoCalificacionEncu!=null)
     		 filtro += "tipoCalificacionEncuestas.id == "+idTipoCalificacionEncu;
     	 if(idTipoCalificacion!=null){
     		if(idTipoCalificacionEncu!=null)     		      	 
     			filtro += " || tipoCalificacion.id == "+idTipoCalificacion;
     		else filtro += "tipoCalificacion.id == "+idTipoCalificacion;
     	 }	 
     	 filtro += ")";
     	 Vector preguntas = persistencia.getObjectosPorClaseYFiltro
                  ("persistencia.dominio.ValorCalificacion","orden",filtro);
     	 System.out.println("FILTROOOOOO: "+filtro);
     	 System.out.println("###########: "+filtro.length());
        return preguntas;
    }
    
    public Vector getPreguntasEncuestasParaTipoUsuario(String tipoUsuario) throws Exception{
 
          Long idEncuesta = (this.getEncuestaSiat(tipoUsuario)).getId();	
       	  String filtro=
                "encuestaSiat.id == "+idEncuesta;
          Vector preguntas = persistencia.getObjectosPorClaseYFiltro
                    ("persistencia.dominio.PreguntaSiat","orden",filtro);
          return preguntas;

      }
       
    public boolean tieneQueRealizarEncuesta(Long idPersona) throws Exception{
     
        	//System.out.println("idPersona: "+idPersona);
        	ControlOrganizacion controlOrganizacion = new ControlOrganizacion(this.persistencia);
        	//Puede que aca haga falta agregar las comisiones, o no se da el caso de que una persona sea TUTOR en el Aula y DOCENTE en la comision
        	//Supongo que NO porque el TIPO DE USUARIO esta asociado al PARTICIPANTE. 
        	Vector cursosDeLaPersona = controlOrganizacion.getAulasUsuario("persistencia.dominio.Curso",idPersona,TIPO_AULAS.CURSO);
        	//System.out.println("cursosDeLaPersona.size(): "+cursosDeLaPersona.size());
        	String filtroCurso = "("+UtilsObjetosDominio.generarFiltroConIds("aula",cursosDeLaPersona);
        		   filtroCurso += ") & persona.id == "+idPersona;
        	Vector participantesCurso = persistencia.getObjectosPorClaseYFiltro
            				("persistencia.dominio.Participante",filtroCurso);        	
        	//System.out.println("participantesCurso.size(): "+participantesCurso.size());
        	Vector tiposUsuario = new Vector();
        	for (Iterator i = participantesCurso.iterator(); i.hasNext();) {
				Participante participante = (Participante) i.next();
				UtilsObjetosDominio.agregarObjetoAVector(participante.getTipoUsuario(), tiposUsuario);				
			}
        	Vector encuestas = this.getEncuestaSiatParaTiposDeUsuarios(tiposUsuario);
        	if(encuestas.isEmpty())
        		return false;
        	//System.out.println("encuestasObject: "+encuestas.size());
        	Vector encuestasHechas = null;
        	String filtro = "";
        	for (Iterator i = encuestas.iterator(); i.hasNext();) {
				EncuestaSiat encuestaSiat = (EncuestaSiat) i.next();
				filtro += "encuestaSiat.id == "+encuestaSiat.getId();				
				filtro += " & persona.id == "+idPersona;
	        	filtro += " & ( estado == \""+ ESTADO_ENCUESTA.RESPONDIDA+"\"";
	        	filtro += " || estado == \""+ ESTADO_ENCUESTA.CANCELADA+"\" )";
	        	//System.out.println("filtrotieneQueRealizarEncuesta: "+filtro);
	        	encuestasHechas = persistencia.getObjectosPorClaseYFiltro
	                    ("persistencia.dominio.EncuestaSiatPersona",filtro);
	        	//System.out.println("encuestasHechas: "+encuestasHechas.size());
	         	if(encuestasHechas.isEmpty())
	         		return true;
	         	else{  	
	         		filtro = "";
	         		encuestasHechas = null;
	         	}	
			}
        	return false;
   
    }
    
    public String guardarEncuestaTecnologia(Long idEncuestaSiat, Long idPersona, String edad, String radio1, String radio2, String radio3, 
    		String radio4, String radio5, String radio6, String radio7, String radio8, String radio9, String radio10, String radio11, String radio12, 
    		String radio13, String radio14, String[] check15, String[] check16, String radio17, String[] check18, String[] check19, String[] check20, 
    		String radio21, String radio22, String radio23, String radio24, String radio25, String radio26, String radio27, String radio28, String radio29) throws Exception{
 		  
    	  EncuestaSiat encuestaSiat = (EncuestaSiat)persistencia.getObjectoPorId("persistencia.dominio.EncuestaSiat",idEncuestaSiat);  		   
		  Persona persona = (Persona)persistencia.getObjectoPorId("persistencia.dominio.Persona",idPersona);
		  EncuestaSiatPersona encuestaSiatPersona = new EncuestaSiatPersona();
		  encuestaSiatPersona.setEstado(ESTADO_ENCUESTA.RESPONDIDA);
		  persistencia.hacerPersistente(encuestaSiatPersona);
		  encuestaSiatPersona.setEncuestaSiat(encuestaSiat);
		  encuestaSiatPersona.setPersona(persona);
		  encuestaSiatPersona.setEdad(edad);

		  String filtroValorCalificacion = "";
		  PreguntaSiat preguntaSiat = null;
		  ValorCalificacion valorCalificacion = null;
		  
		  Long datoPregunta = null;
		  Long datoRespuesta = null;
		  int idx = 0;
		  RespuestaPreguntaSiat respuestaPreguntaSiat = null;
		  if(radio1!=null){
			  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);		  
			  idx = radio1.indexOf("#");
			  datoPregunta = Long.valueOf(radio1.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio1.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	      	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	      	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }	  
		 
		  if(radio2!=null){
	      	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio2.indexOf("#");
			  datoPregunta = Long.valueOf(radio2.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio2.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio3!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio3.indexOf("#");
			  datoPregunta = Long.valueOf(radio3.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio3.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio4!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio4.indexOf("#");
			  datoPregunta = Long.valueOf(radio4.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio4.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio5!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio5.indexOf("#");
			  datoPregunta = Long.valueOf(radio5.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio5.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio6!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio6.indexOf("#");
			  datoPregunta = Long.valueOf(radio6.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio6.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  if(radio7!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio7.indexOf("#");
			  datoPregunta = Long.valueOf(radio7.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio7.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio8!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio8.indexOf("#");
			  datoPregunta = Long.valueOf(radio8.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio8.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio9!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio9.indexOf("#");
			  datoPregunta = Long.valueOf(radio9.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio9.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio10!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio10.indexOf("#");
			  datoPregunta = Long.valueOf(radio10.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio10.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
		  if(radio11!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio11.indexOf("#");
			  datoPregunta = Long.valueOf(radio11.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio11.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
		  }
		  
    	  if(radio12!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio12.indexOf("#");
			  datoPregunta = Long.valueOf(radio12.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio12.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio13!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio13.indexOf("#");
			  datoPregunta = Long.valueOf(radio13.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio13.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio14!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio14.indexOf("#");
			  datoPregunta = Long.valueOf(radio14.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio14.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  if(check15!=null){
	    	  for (int i = 0; i < check15.length; i++) {
	    		  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
	    		  persistencia.hacerPersistente(respuestaPreguntaSiat);
	    		  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	          	  idx = check15[i].indexOf("#");
	    		  datoPregunta = Long.valueOf(check15[i].substring(0,idx));
	    		  datoRespuesta = Long.valueOf(check15[i].substring(idx+1));		  
	    		  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
	    		  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
	    		  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	        	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	        	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
	    	  }
    	  }	  
      	  
    	  if(check16!=null){
	    	  for (int i = 0; i < check16.length; i++) {
	    		  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
	    		  persistencia.hacerPersistente(respuestaPreguntaSiat);
	    		  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	          	  idx = check16[i].indexOf("#");
	    		  datoPregunta = Long.valueOf(check16[i].substring(0,idx));
	    		  datoRespuesta = Long.valueOf(check16[i].substring(idx+1));		  
	    		  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
	    		  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
	    		  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	        	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	        	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
	    	  }
    	  }  
    	  
    	  if(radio17!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio17.indexOf("#");
			  datoPregunta = Long.valueOf(radio17.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio17.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(check18!=null){
	    	  for (int i = 0; i < check18.length; i++) {
	    		  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
	    		  persistencia.hacerPersistente(respuestaPreguntaSiat);
	    		  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	          	  idx = check18[i].indexOf("#");
	    		  datoPregunta = Long.valueOf(check18[i].substring(0,idx));
	    		  datoRespuesta = Long.valueOf(check18[i].substring(idx+1));		  
	    		  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
	    		  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
	    		  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	        	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	        	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
	    	  }
    	  }
    	  
    	  if(check20!=null){
	    	  for (int i = 0; i < check20.length; i++) {
	    		  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
	    		  persistencia.hacerPersistente(respuestaPreguntaSiat);
	    		  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	          	  idx = check20[i].indexOf("#");
	    		  datoPregunta = Long.valueOf(check20[i].substring(0,idx));
	    		  datoRespuesta = Long.valueOf(check20[i].substring(idx+1));		  
	    		  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
	    		  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
	    		  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	        	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	        	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
	    	  }
    	  }
    	  
    	  if(check19!=null){
	    	  for (int i = 0; i < check19.length; i++) {
	    		  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
	    		  persistencia.hacerPersistente(respuestaPreguntaSiat);
	    		  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	          	  idx = check19[i].indexOf("#");
	    		  datoPregunta = Long.valueOf(check19[i].substring(0,idx));
	    		  datoRespuesta = Long.valueOf(check19[i].substring(idx+1));		  
	    		  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
	    		  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
	    		  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	        	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	        	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
	    	  }
    	  }
    	  
    	  if(radio21!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio21.indexOf("#");
			  datoPregunta = Long.valueOf(radio21.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio21.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio22!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio22.indexOf("#");
			  datoPregunta = Long.valueOf(radio22.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio22.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio23!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio23.indexOf("#");
			  datoPregunta = Long.valueOf(radio23.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio23.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio29!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio29.indexOf("#");
			  datoPregunta = Long.valueOf(radio29.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio29.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio24!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio24.indexOf("#");
			  datoPregunta = Long.valueOf(radio24.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio24.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio25!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio25.indexOf("#");
			  datoPregunta = Long.valueOf(radio25.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio25.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio26!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio26.indexOf("#");
			  datoPregunta = Long.valueOf(radio26.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio26.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio27!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio27.indexOf("#");
			  datoPregunta = Long.valueOf(radio27.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio27.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
    	  if(radio28!=null){
	    	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			  persistencia.hacerPersistente(respuestaPreguntaSiat);
			  respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
	      	  idx = radio28.indexOf("#");
			  datoPregunta = Long.valueOf(radio28.substring(0,idx));
			  datoRespuesta = Long.valueOf(radio28.substring(idx+1));		  
			  preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat","id == "+datoPregunta).elementAt(0);
			  respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			  filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacionEncuestas().getId()+" && id == "+datoRespuesta;		  
	    	  valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
	    	  respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
    	  }
    	  
		  return comun.constantes.TEXTOS.ACTUALIZACION_DE_DATOS_EXITOSA;
  }
    
    public String guardarEncuesta(Long idEncuestaSiat, Long idPersona, Vector respuestas) throws Exception{
   		  EncuestaSiat encuestaSiat = (EncuestaSiat)persistencia.getObjectoPorId("persistencia.dominio.EncuestaSiat",idEncuestaSiat);  		   
  		  Persona persona = (Persona)persistencia.getObjectoPorId("persistencia.dominio.Persona",idPersona);
  		  EncuestaSiatPersona encuestaSiatPersona = new EncuestaSiatPersona();
  		  encuestaSiatPersona.setEstado(ESTADO_ENCUESTA.RESPONDIDA);
  		  persistencia.hacerPersistente(encuestaSiatPersona);
  		  encuestaSiatPersona.setEncuestaSiat(encuestaSiat);
  		  encuestaSiatPersona.setPersona(persona);

  		  String filtroPregunta = "";
  		  String filtroValorCalificacion = "";
  		  PreguntaSiat preguntaSiat = null;
  		  ValorCalificacion valorCalificacion = null;
  		  int cont = 1;
  		  for (Iterator i = respuestas.iterator(); i.hasNext();) {
			String rta = (String) i.next();
			RespuestaPreguntaSiat respuestaPreguntaSiat = new RespuestaPreguntaSiat();
			persistencia.hacerPersistente(respuestaPreguntaSiat);
			respuestaPreguntaSiat.setEncuestaSiatPersona(encuestaSiatPersona);
			//Asociamos la PreguntaSIAT y la respuesta...
			filtroPregunta = "orden == "+cont;
        	preguntaSiat = (PreguntaSiat)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.PreguntaSiat",filtroPregunta).elementAt(0);
			respuestaPreguntaSiat.setPreguntaSiat(preguntaSiat);
			//Asociamos la respuesta con la calificacion
			if(preguntaSiat.getTipo().compareTo(TIPO_PREGUNTA_SIAT.MULTIPLE_OPCION)==0){
				filtroValorCalificacion = "tipoCalificacionEncuestas.id == "+preguntaSiat.getTipoCalificacion().getId();
				filtroValorCalificacion += " & nombre == \""+rta+"\"";
	        	valorCalificacion = (ValorCalificacion)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.ValorCalificacion",filtroValorCalificacion).elementAt(0);
				respuestaPreguntaSiat.setValorCalificacion(valorCalificacion);
			}else
				respuestaPreguntaSiat.setDetalle(rta);
			cont++;
  		  }
  		  return comun.constantes.TEXTOS.ACTUALIZACION_DE_DATOS_EXITOSA;
    }
    
    public String canceloEncuesta(Long idEncuestaSiat, Long idPersona) throws Exception{
   		  EncuestaSiat encuestaSiat = (EncuestaSiat)persistencia.getObjectoPorId("persistencia.dominio.EncuestaSiat",idEncuestaSiat);  		   
    		  Persona persona = (Persona)persistencia.getObjectoPorId("persistencia.dominio.Persona",idPersona);
    		  EncuestaSiatPersona encuestaSiatPersona = new EncuestaSiatPersona();
    		  encuestaSiatPersona.setEstado(ESTADO_ENCUESTA.CANCELADA);
    		  persistencia.hacerPersistente(encuestaSiatPersona);
    		  encuestaSiatPersona.setEncuestaSiat(encuestaSiat);
    		  encuestaSiatPersona.setPersona(persona);
    		  return comun.constantes.TEXTOS.ACTUALIZACION_DE_DATOS_EXITOSA;

    }
}